LINQ fluent style
De codevoorbeelden tot nu toe maken allemaal gebruik van de vloeiende syntax.
De vloeiend syntax maakt gebruik van de query-operator extensiemethoden zoals omschreven in de statische System.Linq.Enumerable
klasse (of System.Linq.Queryable
voor geïnterpreteerde of System.Linq.ParallelEnumerable
voor PLINQ queries). Deze extensiemethoden voegen extra methoden toe aan de instanties van IEnumerable<TSource>
. Dit betekent dat elke instantie van een klasse die deze interface implementeert de LINQ extensiemethoden kunnen gebruiken.
Query operators kunnen apart worden toegepast of aaneengeschakeld om complexere queries te maken.
Aaneengeschakelde queryoperatoren
Als de volgende klasse is gedefinieerd:
Personen[] personen = { new Personen { Name = "Jan", Leeftijd = 60 }, new Personen { Name = "An", Leeftijd = 100 }, new Personen { Name = "Peter", Leeftijd = 15 }, new Personen { Name = "Marijke", Leeftijd = 40 }, new Personen { Name = "Judith", Leeftijd = 20 } };
selecteren we de personen ouder dan 50, ordenen we de namen alfabetisch en selecteren alleen de naam van de persoon:
IEnumerable<string> vijftigPlussers = personen. Where(x => x.Leeftijd >= 50). OrderBy(x => x.Name). Select(x => x.Name); Console.WriteLine("Vijftigplussers:"); foreach (string name in vijftigPlussers) { Console.WriteLine(name); }
Om dat resultaat te bekomen schakelen we drie query operatoren aaneen: Where
, OrderBy
en Select
.
Merk op dat het oorspronkelijke invoersequentie (weergegeven door de variabele personen
) een IEnumerable <Personen>
is, terwijl de uitvoersequentie, weergegeven door de variabele vijftigPlussers
, van een ander gegevenstype is, namelijk een IEnumerable <string>
.